home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 12
/
Aminet 12 (1996)(GTI - Schatztruhe)[!][Jun 1996].iso
/
Aminet
/
misc
/
math
/
prime_2.lha
/
prime_2.liesmich
< prev
next >
Wrap
Text File
|
1996-03-09
|
3KB
|
72 lines
Autor: Gerd Wieczorek
SMail: Berliner Str.1
14959 Trebbin
BRD
EMail: gwieifjc@sp.zrz.tu-berlin.de
(1x wöchentlich kontrolliert)
Programm: Prime (Version 2)
Dieses kurze Programm berechnet alle Primzahlen bis zu einer angegebenen Grenze
und gibt sie in der Shell aus. Die Ausgabe kann ganz normal mit "> Datei" um-
geleitet werden.
Es wird das Verfahren nach Eratosthenes ( Sieb des ~ ) verwendet. Es wird ein
Prozessor >= 68020 benötigt; wenn eine FPU vorhanden ist, kann die entsprechende
Version verwendet werden.
Daraus folgt: prime_020 für Amiga ohne FPU, prime_020_881 für Amiga mit FPU.
Prime kann nur in der Shell aufgerufen werden.
Benutzte Befehlsschablone:
Prime MAX/A/N,BigBuffer=BB/S,NOOUTPUT=NO/S
Bedeutung der Optionen:
MAX - Obergrenze für die Suche nach Primzahlen
BIGBUFFER - Es wird ein größerer interner Buffer für die Ausgabe verwendet
normal: 8 KByte, bei BB: 256 KByte
NOOUTPUT - Es werden keine Zahlen ausgegeben. Damit läßt sich die
Zeit bestimmen, die die eigentliche Berechnung benötigt.
Der Befehl kann während der Ausgabe mit CTRL-C unterbrochen werden. Wenn
allerdings ein großer Buffer verwendet und in die Shell ausgegeben wird,
kann es ein Weilchen dauern, bis die Ausgabe wieder stoppt.
Benötigte Zeiten:
Auf meinem Rechner (A500, 68030/14MHz, 68882/20MHz, 4/1 MB) benötigt
der Aufruf "Prime MAX BIGBUFFER >prime.txt" folgende Zeiten:
MAX 10000 50000 100000 500000 1000000 2000000 3000000 4000000
Zeit (s) 0.2 0.7 1.2 5.5 10.7 21.5 31.9 43.0
Die Zeiten für die alte Version waren leider falsch - ca. um den
Faktor 3 zu klein. Deshalb hier die korrigierten Werte:
MAX 10000 50000 100000 500000 1000000 2000000 3000000 4000000
Zeit (s) 0.7 2.3 4.4 19.4 37.0 70.0 100.0 130.0
Wie man sieht, ist Prime ungefähr dreimal schneller geworden. Dies war
möglich, indem ich den RawDoFmt-Aufruf durch eine selbst programmierte
int->ascii Konvertierroutine ersetzte. Ansonsten blieb alles beim Alten.
Prime arbeitet mit VMM zusammen und nutzt eventuell vorhandenen virtuellen
Speicher. Benötigt werden ca. MAX/8 in KB und Buffer von ca. 10 KB. Aufgrund
der vielen Speicherzugriffe verlangsamt virtueller Speicher das Programm
enorm. Ebenfalls anzuraten ist das Anschalten der Prozessor-Caches
( ca. 35% schneller bei meinem 68030 ). Die erzeugte Textdatei läßt sich
in der Länge abschätzen mit ca. MAX Byte für MAX<100000, sonst ca. 0.6*MAX.
Ansonsten würde ich mich über Anmerkungen, Vorschläge, Bugmeldungen
freuen. Wer keine Vorschläge hat, sollte mir eine kleine E-Mail mit
Geschwindigkeitsangaben ähnlich meiner schicken.
Viel Vergnügen beim Ermitteln von Primzahlen !
Es gelten die üblichen Hinweise:
Die Benutzung von Prime erfolgt auf eigene Gefahr. Für Schäden, die sich
aus der Benutzung von Prime ergeben, bin ich nicht haftbar zu machen. Wenn
jemand Prime in einem anderen Archiv einschließen will, muß er mich vorher
per e-mail kontakten.